function indentify<Type>(arg: Type): Type {
  return arg
}
// 声明方式一 Type作为类型变量可以任意命名
// let myIndentify: <Type>(arg: Type) => Type = indentify
// 声明方式二 使用大对象键值对的方式
// let myIndentify: { <Type>(arg: Type): Type } = indentify

// 泛型接口方式
// interface GenericIdentityFn {
//   <Type>(arg: Type): Type
// }

// let myIndentify: GenericIdentityFn = indentify

// 下边这种方式更为严谨
interface GenericIdentityFn<Type> {
  (arg: Type): Type
}

let myIndentify: GenericIdentityFn<string> = indentify
